/**
 * nwx 简单封装 方便使用
 */
"use strict";

const CONSTVAR = {
	NWPATH: nw.require('path'),
	NWFS: nw.require('fs'),
	APP_DIR:nw.require('path').dirname(nw.process.execPath),
	PROJECT_DIR: nw.process.cwd()
};

~function (jQuery) {
	let path = nw.require('path');
	let fs = nw.require('fs');
	
	
	window.output = function (file) {
		document.write(fs.readFileSync(CONSTVAR.PROJECT_DIR + '/' + file));
	};
	
	window.Q = function (selector) {
		return _addNWXMethodToNode(document.querySelector(selector));
	};
	
	window.QA = function(selector) {
		return _addNWXMethodToNodes(document.querySelectorAll(selector));
	};
	
	function _addNWXMethodToNodes(nodes) {
		for(let i=0; i<nodes.length; i++) {
			_addNWXMethodToNode(nodes[i]);
		}
		
		if(typeof nodes.on == 'undefined') {
			nodes.on = function (type, callback, b) {
				nodes.forEach(function(node) {
					node.on(type, callback, b);
				});
			};
		}
		
		return nodes;
	}
	
	function _addNWXMethodToNode(node) {
		if(node && !/^\[object [0-9a-zA-Z_]*Element\]$/.test(Object.prototype.toString.call(node))) {
			return node;
		}
		
		if(typeof node.on == 'undefined') {
			node.on = node.addEventListener;
		}
		
		if(typeof node.q == 'undefined') {
			node.q = (function(node) {
				return function (selector) {
					return _addNWXMethodToNode(node.querySelector(selector));
				}
			})(node);
		}
		
		if(typeof node.jq == 'undefined' && jQuery && typeof jQuery == 'function') {
			node.jq = jQuery(node);
		}
		
		if(typeof node.qa == 'undefined') {
			node.qa = (function(node) {
				return function (selector) {
					return _addNWXMethodToNodes(node.querySelectorAll(selector));
				}
			})(node);
		}
		
		return node;
	}
}(window.jQuery);